// 面向对象 案例2 点和圆的关系
/**
 * 点和圆的三种关系
 * 1.在圆内
 * 2.在圆上
 * 3.在圆外
 * 要求:给出圆的半径,坐标点(x,y),计算圆与点的关系
 * 公式:
 * ((x1-x2)^2+(y1-y2)^2) == r^2  在圆上
 * ((x1-x2)^2+(y1-y2)^2) < r^2 在圆内
 * ((x1-x2)^2+(y1-y2)^2) > r^2 在圆外
 */
#include <iostream>
#include "point.h"  
#include "circle.h"

using namespace std;

// 计算位置
void caculateLocation(Point &p, Circle &c)
{
    // 圆心
    Point p1 = c.getP();

    int x1 = p1.getX();
    int y1 = p1.getY();
    // 点
    int x2 = p.getX();
    int y2 = p.getY();

    // 半径
    int r = c.getR();

    int ret = ((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
    cout << "r*r:" << r * r << endl;
    cout << "ret:" << ret << endl;

    if (r * r == ret)
    {
        cout << "点" << x2 << "," << y2 << "在圆上" << endl;
    }
    else if (r * r < ret)
    {
        cout << "点" << x2 << "," << y2 << "在圆外" << endl;
    }
    else
    {
        cout << "点" << x2 << "," << y2 << "在圆内" << endl;
    }
}
int main()
{
    // 点
    Point p;
    p.setX(10);
    p.setY(10);
    Point p2;
    p2.setX(10);
    p2.setY(9);
    Point p3;
    p3.setX(10);
    p3.setY(11);

    // 圆
    Circle c;
    // 圆心
    Point p4;
    p4.setX(10);
    p4.setY(0);
    c.setP(p4);
    // 半径
    c.setR(10);

    caculateLocation(p, c);
    caculateLocation(p2, c);
    caculateLocation(p3, c);
   
   system("pause");
    return 0;
}